﻿using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq.Expressions;

namespace MyFramework.Command
{
    /// <summary>
    /// 
    /// </summary>
    public static class PropertyWatchExtensions
    {

        /// <summary>
        /// Multis the watch.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="source">The source.</param>
        /// <param name="branches">The branches.</param>
        /// <returns></returns>
        public static object MultiWatch<T>(this T source, params Expression<Func<T, object>>[] branches) where T : class, INotifyPropertyChanged
        {
            throw new InvalidOperationException("This method is not intended to be called");
        }

        /// <summary>
        /// Collections the watch.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="source">The source.</param>
        /// <param name="branches">The branches.</param>
        /// <returns></returns>
        public static object CollectionWatch<T>(this ObservableCollection<T> source, params Expression<Func<T, object>>[] branches)
        {
            throw new InvalidOperationException("This method is not intended to be called");
        }
    }
}
